home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 2, No. 01 (1982-09)(Softdisk)(Side B).zip / Softdisk Magazette Volume 2, No. 01 (1982-09)(Softdisk)(Side B).do / MENU.bas < prev    next >
BASIC Source File  |  1996-12-24  |  6KB  |  135 lines

  1. 2 ID$ = "SEPTEMBER 82 SOFTDISK HARVEST"
  2. 3 PN$ = "HARVEST.MENU"
  3. 5  REM ***************************                          **   FLEXIBLE MENU PROGRAM  **       BY DALE SALYER     **       JULY 25, 1981      **                          *****************************
  4. 7  REM ***************************                          **    NESTED MENU FEATURE   **  ADDED BY DANIEL TOBIAS  **     FEBRUARY 6, 1982     **                          *****************************
  5. 10 D$ =  CHR$(13) + CHR$(4):Q$ =  CHR$(34):Q1$ = Q$ +"," +Q$
  6. 20  DIM DESC$(20,20),CMD$(20,20),FILE$(20,20)
  7. 30  DIM NP(20)
  8. 40  READ NM: FOR A = 0 TO NM
  9. 50  READ NP(A): FOR B = 0 TO NP(A)
  10. 60  READ DESC$(A,B),CMD$(A,B),FILE$(A,B)
  11. 70  NEXT B,A
  12. 80 M = 0
  13. 90  GOTO 300
  14. 150 K =  PEEK( -16384)
  15. 160  IF K <128  THEN 150
  16. 170  POKE  -16368,0:C = K -192
  17. 180  IF K = 141  THEN  TEXT : HOME : PRINT D$;"CATALOG": END 
  18. 190  IF K = 160  THEN  GOSUB 250: GOTO 150
  19. 195  IF K = 187  AND CM$(M,0) < >""  THEN F$ = CM$(M,0): POP : GOTO 900
  20. 200  IF K = 155  THEN  TEXT : HOME : END 
  21. 210  IF K = 175  THEN 500
  22. 220  IF C <1  OR C >NP(M)  THEN 150
  23. 222  IF  VAL(CMD$(M,C)) >0  OR CMD$(M,C) = "0"  THEN  POP :F$ = CMD$(M,C): GOTO 900
  24. 225  VTAB 19: PRINT CMD$(M,C);FILE$(M,C)
  25. 227  TEXT : HOME 
  26. 230  PRINT D$;CMD$(M,C);FILE$(M,C)
  27. 240  END 
  28. 245  REM *************************                          **   PRINT NEXT PAGE OF     **       PROGRAMS.          **                          *****************************
  29. 250  HOME : FOR I = OL TO OL +4:VT = (I -OL +1) *2 +6
  30. 260  HTAB 3: VTAB VT: PRINT  CHR$(64 +I);: HTAB 10: PRINT DESC$(M,I)
  31. 270  IF I > = NP(M)  THEN OL = 1: RETURN 
  32. 280  NEXT I
  33. 290 OL = OL +5: RETURN 
  34. 300  REM *************************                          **     PROGRAM START        **                          *****************************
  35. 310  TEXT : HOME : INVERSE : PRINT "**** FLEXIBLE MENU : BY DALE SALYER ****NESTED MENU FEATURE ADDED BY DAN TOBIAS ";
  36. 320  NORMAL : PRINT "----------------------------------------";ID$;: IF  LEN(ID$) <40  THEN  PRINT 
  37. 330  PRINT "----------------------------------------"
  38. 332  HTAB 10: VTAB 6: PRINT DESC$(M,0)
  39. 335  POKE 34,6
  40. 337  INVERSE 
  41. 340  VTAB 23: HTAB 11: PRINT "<RETURN> CATALOG   "
  42. 350  VTAB 22: HTAB 11: PRINT "<SPACE>  NEXT PAGE "
  43. 360  VTAB 21: HTAB 11: PRINT "<ESC>APE TO BASIC  "
  44. 370  VTAB 20: HTAB 11: PRINT " / CHANGE THE MENU "
  45. 372 P = 19
  46. 375  IF CM$(M,0) < >""  THEN  VTAB 19: HTAB 11: PRINT " ; PREVIOUS MENU   ":P = 18
  47. 380  VTAB P: HTAB 11: PRINT "A - "; CHR$(64 +NP(M));" SELECT PROG. "
  48. 390  NORMAL : POKE 35,17: REM  BOTTOM
  49. 400 OL = 1
  50. 420  GOSUB 250
  51. 430  GOSUB 150
  52. 440  END 
  53. 500  REM *************************                          **     ENTER NEW DATA       **                          *****************************
  54. 502  TEXT : HOME : PRINT "(HIT RETURN IF UNCHANGED)": PRINT "ENTER DISK I.D. LINE:": INPUT "";I$: IF I$ < >""  THEN ID$ = I$
  55. 503  PRINT : INPUT "NAME TO SAVE THIS PROGRAM UNDER:        ";P$: IF P$ < >""  THEN PN$ = P$
  56. 505 M = 0:NM = 0
  57. 507 FILE$(0,0) = "":CMD$(0,0) = "":DESC$(0,0) = ""
  58. 510  TEXT : HOME : HTAB 10: PRINT "DATA STATEMENT ENTRY": POKE 34,3: FOR I = 1 TO 20: HOME 
  59. 515  PRINT "ENTERING MENU #"M"  "DESC$(M,0)
  60. 520  VTAB 5: PRINT "NAME OF PROGRAM <QUIT = DONE,": PRINT "RETURN = MENU,   CAT = CATALOG>": INPUT FILE$(M,I)
  61. 524  IF FILE$(M,I) = "QUIT"  THEN 600
  62. 526  IF FILE$(M,I) = "CAT"  THEN  PRINT D$;"CATALOG": PRINT : PRINT "PRESS RETURN TO CONTINUE": GET R$: HOME : GOTO 520
  63. 528  IF FILE$(M,I) = ""  THEN  PRINT "THIS WILL BE MENU #";NM +1:NM = NM +1:CMD$(M,I) =  STR$(NM):CMD$(NM,0) =  STR$(M):FILE$(NM,0) = "":DESC$(NM,0) = "": GOTO 580
  64. 530  VTAB 10: PRINT "TYPE OF FILE - <E>XEC, <B>RUN, <R>UN";: INPUT C$
  65. 535 C$ =  LEFT$(C$,1)
  66. 540  IF C$ = "E"  THEN CMD$(M,I) = "EXEC ": PRINT : PRINT "     EXEC": GOTO 580
  67. 550  IF C$ = "B"  THEN CMD$(M,I) = "BRUN ": PRINT : PRINT "     BRUN": GOTO 580
  68. 560  IF C$ = "R"  THEN CMD$(M,I) = "RUN ": PRINT : PRINT "     RUN": GOTO 580
  69. 570  GOTO 530
  70. 580  VTAB 15: PRINT "DESCRIPTION (25 CHAR. MAX.) :"
  71. 590  VTAB 17: HTAB 1: PRINT "_________________________!": VTAB 17: HTAB 1
  72. 595  INPUT DESC$(M,I): IF FILE$(M,I) = ""  THEN DESC$(NM,0) = DESC$(M,I)
  73. 597  NEXT I
  74. 600 NP(M) = I -1
  75. 605  IF M <NM  THEN M = M +1: GOTO 510
  76. 610  PRINT D$;"OPEN EXECFILE": PRINT D$;"DELETE EXECFILE": PRINT D$;"OPEN EXECFILE": PRINT D$;"WRITE EXECFILE"
  77. 613  PRINT "2 ID$=";Q$;ID$;Q$: PRINT "3 PN$=";Q$;PN$;Q$
  78. 620  PRINT "DEL 1000,2000": PRINT "1000 DATA ";NM
  79. 625 LN = 1010
  80. 630  FOR I = 0 TO NM: PRINT LN;" DATA "NP(I):LN = LN +10: FOR J = 0 TO NP(I)
  81. 640  PRINT LN;" DATA ";Q$;DESC$(I,J);Q1$;CMD$(I,J);Q1$;FILE$(I,J);Q$
  82. 645 LN = LN +10
  83. 650  NEXT J,I
  84. 670  PRINT "UNLOCK ";PN$
  85. 680  PRINT "SAVE ";PN$
  86. 690  PRINT "LOCK ";PN$
  87. 700  PRINT "RUN ";PN$
  88. 710  PRINT D$"CLOSE EXECFILE"
  89. 720  PRINT D$;"EXEC EXECFILE"
  90. 730  TEXT 
  91. 740  VTAB 20: END 
  92. 900  REM  GOTO MENU
  93. 910 M =  VAL(F$)
  94. 920  GOTO 300
  95. 1000  DATA  6
  96. 1010  DATA  6
  97. 1020  DATA  "","",""
  98. 1030  DATA  "GAMES","1",""
  99. 1040  DATA  "NOVELTIES","2",""
  100. 1050  DATA  "UTILITIES","3",""
  101. 1060  DATA  "HOME & BUSINESS","4",""
  102. 1070  DATA  "IQ STUFF","5",""
  103. 1080  DATA  "TUTORIALS","6",""
  104. 1090  DATA  5
  105. 1100  DATA  "GAMES","0",""
  106. 1110  DATA  "A.DUEL","RUN ","A.DUEL"
  107. 1120  DATA  "SPACE.CHASER","RUN ","SPACE.CHASER"
  108. 1130  DATA  "DIVE.BOMBER","RUN ","DIVE.BOMBER"
  109. 1140  DATA  "UFO.II","RUN ","UFO.II"
  110. 1150  DATA  "ARTILLERY","RUN ","ARTILLERY"
  111. 1160  DATA  1
  112. 1170  DATA  "NOVELTIES","0",""
  113. 1180  DATA  "JFK","RUN ","JFK"
  114. 1190  DATA  3
  115. 1200  DATA  "UTILITIES","0",""
  116. 1210  DATA  "MINIASSEMBLER","BRUN ","MINIASSEMBLER"
  117. 1220  DATA  "MEMORY.TEST","RUN ","MEMORY.TEST"
  118. 1225  DATA  "SALYER.HELLO","RUN ","SALYER.HELLO"
  119. 1230  DATA  5
  120. 1240  DATA  "HOME & BUSINESS","0",""
  121. 1250  DATA  "NFL.RANKER","RUN ","NFL.RANKER"
  122. 1260  DATA  "DECISION.MAKER","RUN ","DECISION.MAKER"
  123. 1270  DATA  "INTRUDER.ALERT","RUN ","INTRUDER.ALERT"
  124. 1280  DATA  "SUPER.SCORES","RUN ","SUPER.SCORES"
  125. 1290  DATA  "CARLOANS","RUN ","CARLOANS"
  126. 1300  DATA  3
  127. 1310  DATA  "IQ STUFF","0",""
  128. 1320  DATA  "FRACTION.PRACTICE","RUN ","FRACTION.PRACTICE"
  129. 1330  DATA  "ROOTS.&.PREFIXES","RUN ","ROOTS.&.PREFIXES"
  130. 1340  DATA  "BALLOONS","RUN ","BALLOONS"
  131. 1350  DATA  3
  132. 1360  DATA  "TUTORIALS","0",""
  133. 1370  DATA  "ANIMATE.COW","RUN ","ANIMATE.COW"
  134. 1380  DATA   "COMPILER.DEMO","RUN ","COMPILER.INTRO"
  135. 1390  DATA  "ELF","RUN ","ELF"